www.gusucode.com > XerCMS 携云PHP企业建站程序 v2015PHP源码程序 > XerCMS 携云PHP企业建站程序 v2015/XerCMS_v20150724/XerCMS_v20150724/Install/index.php

    <?php
/**
 * @name     XERCMS
 * @author   Arno <XerCMS@163.com> [QQ:1328013]
 * @version  1.0.0
 * @link     http://www.XerCMS.com
 */

error_reporting(0);
ob_end_clean();
define('XERCMS', str_replace('\\', '/',substr(dirname(__FILE__),0,-7)));

if(file_exists(XERCMS.'Install/auth.key') && filemtime(XERCMS.'Install/auth.key') + 600 > time()) {
     
} else {
     //exit('Access Denied');
}

define('INC', XERCMS.'XerCMS/');
require_once(XERCMS.'XerCMS/Utils/XerCMS_base.php');
require_once(XERCMS.'XerCMS/Library/XerCMS_db.php');
header('Content-type: text/html; charset=utf-8');


!ini_get('safe_mode') && set_time_limit(0);
date_default_timezone_set('PRC');

$urlpath = str_replace('\\', '/',substr(dirname($_SERVER['PHP_SELF']),0,-7));

$do = isset($_GET['do']) ? $_GET['do'] : 'environment';
in_array($do,array('environment','init','config','agreement','language')) && include_once(XERCMS.'Install/tpl/'.$do.'.php');

if($do == 'init') {
     //echo str_pad('', 1024);@flush();
     $db_host = trim(p('dbhost'));
     $db_user = trim(p('username')); 
     $db_pass = trim(p('password')); 
     $db_name = trim(p('dbname')); 
     $db_mode = trim(p('dbmode'));
     //echo $db_host;

     ini('db',array('0'=>array('type'=>'mysql','host'=>$db_host,'user'=>$db_user,'pass'=>$db_pass,'name'=>$db_name,'code'=>'utf8')));
     DB::$debug = true;
     DB::dconnect();
     if(!empty(DB::$error)) {
          exit('<script>$(\'result\').value = $(\'result\').value + "错误提示:'.strtr(DB::$errors,array('\''=>'\\\'',"\n"=>'',"\r"=>'')).'\r\n";$(\'result\').scrollTop = $(\'result\').scrollHeight;</script>'.str_pad('', 1024));//@flush();
     }
     $res = DB::select_db($db_name);
     if (!$res) {
          DB::query('CREATE DATABASE IF NOT EXISTS `'.$db_name.'`');
          if(!empty(DB::$error)) {
               exit('<script>document.getElementById(\'result\').value = document.getElementById(\'result\').value + "错误提示:'.strtr(DB::$error,array('\''=>'\\\'',"\n"=>'',"\r"=>'')).'\r\n";$(\'result\').scrollTop = $(\'result\').scrollHeight;</script>'.str_pad('', 1024));//@flush();
          }
          DB::select_db($db_name);
     }
     DB::setcode();
     if($db_mode == 'check') {
          $sqlfile = array('struct/base.sql','struct/archives.sql','struct/special.sql','struct/forum.sql','struct/member.sql');
     } else {
          $sqlfile = array('delete/base.sql','delete/archives.sql','delete/special.sql','delete/forum.sql','delete/member.sql','struct/base.sql','struct/archives.sql','struct/special.sql','struct/forum.sql','struct/member.sql','data/zh-cn.sql');
     }    
     $sql = '';
     foreach($sqlfile as $k=>$v) {
          $sql .= "\r\n".file_get_contents(XERCMS.'Install/sql/'.$v)."\r\n";
     }
     $sql = explode(';'."\r\n",$sql);
     foreach($sql as $k=>$val) {
          $val = trim($val);
          if(empty($val) === false) {
               $res = DB::query($val);
               if(empty(DB::$error)) {
                    if(preg_match('/CREATE TABLE IF NOT EXISTS ([a-zA-Z0-9\_]+)/',$val,$match)){	
                         echo '<script>document.getElementById(\'result\').value = document.getElementById(\'result\').value + "创建表['.$match[1].']成功\r\n";</script>'.str_pad('', 1024);@flush();	
                    } else if (preg_match('/DROP TABLE IF EXISTS ([a-zA-Z0-9\_]+)/',$val,$match)) {
                         echo '<script>document.getElementById(\'result\').value = document.getElementById(\'result\').value + "检查表['.$match[1].']成功\r\n";</script>'.str_pad('', 1024);@flush();	
                    } else if (preg_match('/INSERT INTO\s{0,}[\`]([a-zA-Z0-9\_]+)[\`]\s{0,}/',$val,$match)) {
                         echo '<script>document.getElementById(\'result\').value = document.getElementById(\'result\').value + "插入数据['.$match[1].']成功\r\n";</script>'.str_pad('', 1024);@flush();	
                    }		
                    echo '<script>document.getElementById(\'result\').scrollTop = document.getElementById(\'result\').scrollHeight;</script>';
               } else {
                    exit('<script>document.getElementById(\'result\').value = document.getElementById(\'result\').value + "错误提示:'.strtr(DB::$error.$val,array('\''=>'\\\'',"\n"=>'',"\r"=>'')).'\r\n";document.getElementById(\'result\').scrollTop = document.getElementById(\'result\').scrollHeight;</script>').str_pad('', 1024);@flush();	  
               }
          }  
     }
     $adminaccount = $_POST['adminaccount'];$adminpass = $_POST['adminpass'];
     DB::query("INSERT INTO xercms_member VALUES ('1','".$adminaccount."','".md5($adminpass)."',1);");
     DB::query("INSERT INTO xercms_member_credits VALUES ('1','0','0','0','0','0','0');");
     DB::query("INSERT INTO xercms_member_session VALUES ('1','127.0.0.1','0','');");
     DB::query("INSERT INTO xercms_member_verify VALUES ('1','0','0');");
     DB::query("INSERT INTO xercms_member_count VALUES ('1',0,0,0,0,0,0,0,'');");
     DB::query("INSERT INTO xercms_member_profile (`uid`,`nick`,`group`) VALUES (1,'".$adminaccount."','1');");
     ini('globals',array('domain'=>$_SERVER['HTTP_HOST']));
     file_put_contents(INC.'Data/domains/'.htmlentities($_SERVER['HTTP_HOST']).'.config','w+');
     DB::update('xercms_nav',array('url'=>$urlpath),array('id'=>2));
     $files = array('Install/index.php','index.php');
     foreach($files as $v) {
          $content = file_get_contents(XERCMS.$v);
	     $content = strtr($content,array('//exit(\'Access Denied\');'=>'exit(\'Access Denied\');',"header('Location: Install/');exit;\r\n"=>"//header('Location: Install/');exit;\r\n"));
	     $h = fopen(XERCMS.$v,'w+');
	     fwrite($h,$content);
	     fclose($h);
     }
     file_exists(XERCMS.'Install/auth.key') && unlink(XERCMS.'Install/auth.key');
     echo '<script>finish();</script>';
     exit('<script src="http://www.xercms.com/index.php?m=plugin&id=count&s=install" defer="defer"></script>');
} else if ($do == 'check') {
     !isset($_GET['type']) && exit('Access Denied');
     $type = g('type');
     $ret = array();
     switch($type) {
          case '1':
               $Dirs = array(
	               'index.php',
	               'Install/index.php',
	               'Upfiles/',
	               'XerCMS/Data/',
                    'XerCMS/Logs/',
	               'XerCMS/Caches/',
                    'XerCMS/Session/XerCMS.htm',
                    'XerCMS/Language/',   
	               'Assets/player/XerCMS.htm',
                    'Assets/ads/XerCMS.htm',
	          );
               $subDirs = array(
	               'XerCMS/Language/'=>array(
	                    'XerCMS.htm',
                         'template/XerCMS.htm',
                         'plugin/XerCMS.htm'),
	               'XerCMS/Logs/'=>array(
	                    'XerCMS.htm',
                         'Database/XerCMS.htm'), 
	               'XerCMS/Caches/'=>array(
	                    'ads/XerCMS.htm',
                         'fetchSql/XerCMS.htm',
                         'other/XerCMS.htm',
                         'patch/XerCMS.htm',
                         'plugin/XerCMS.htm',
                         'template/XerCMS.htm',
	                    'apis/XerCMS.htm'),    
	               'Upfiles/'=>array(
	                    'attach/XerCMS.htm',
                         'images/XerCMS.htm',
                         'slides/XerCMS.htm',
                         'special/XerCMS.htm',            
	                    'xercms/XerCMS.htm'),   
	               'XerCMS/Data/'=>array(
	                    'XerCMS.htm',
                         '#sVar/XerCMS.htm',
                         'archives/XerCMS.htm',
                         'backup/XerCMS.htm',
                         'domains/XerCMS.htm',
                         'forum/XerCMS.htm',
                         'links/XerCMS.htm',
                         'member/XerCMS.htm',
	                    'plugins/XerCMS.htm')                       
               );
	          foreach($Dirs as $v) {                  
                    if(isset($subDirs[$v])) {
                         $isable = true;
                         foreach($subDirs[$v] as $sub) {
                              if(!isable($v.$sub)) {
                                   $isable = false;
                                   $ret[] = array($v.'(.*)','No'); 
                                   break;
                              }                                   
                         }
                         if($isable) {
                              $ret[] = array($v.'(.*)','Yes');
                         }
                    } else {
                         $dir = dirname($v);if($dir == '.') $dir = '/';
                         if(isable($v)) {
                              $ret[] = array($dir,'Yes');
                         } else $ret[] = array($dir,'No');
                    }
               }
          break;
          case '2':
               $version = explode('.', PHP_VERSION);
               $verNum = $version[0] * 10000 + $version[1] * 100 + $version[2];
               if($verNum >= 50300) {
                    $ret[] = array('version','Yes');
               } else $ret[] = array('version','< 5.3');         
               $ext = array('mysql_connect','imagecreate','mb_substr');
               foreach($ext as $v) {
                    if(function_exists($v)) {
                         $ret[] = array($v,'Yes');
                    } else $ret[] = array($v,'No');
               }
          break;
     }
     exit(json_encode($ret));
}
exit;

function isable($path) {
     $f = XERCMS.$path;
     $r = fopen($f,'a+');
     if($r){return true;}
     else {return false;}
     @fclose($r);
     return $r;
}
?>